package com.guiguli.BigIntegerDemo;

import java.math.BigInteger;
import java.util.Random;

public class BigIntegerDemo1 {
    public static void main(String[] args) {

        //1.获取一个随机的大整数
        Random r = new Random();
        for (int i = 0; i < 100; i++) {
            BigInteger bd1 = new BigInteger(4,r);
            System.out.println(bd1);//[0-15]
        }

        //2.获取一个指定的大整数(字符号必须是整数，否则会报错)
        BigInteger bd2 = new BigInteger("999999999999999999999999999999999999999999999999999999999");
        System.out.println(bd2);

        //3.获取指定进制的大整数 100二进制
        BigInteger bd4 = new BigInteger("100",2);
        System.out.println(bd4);//sout默认打印10进制，也就是4

        //4.静态方法获取BigInteger的对象,内部有优化
        //上限是long的取值范围
        //在内部对-16-16先创建好BigInterger的对象，如果多次获取不会重新创建新的
        BigInteger bd5 = BigInteger.valueOf(Long.MAX_VALUE+1);
        System.out.println(bd5);//超出就为负

        BigInteger bd6 = BigInteger.valueOf(16);
        BigInteger bd7 = BigInteger.valueOf(16);
        System.out.println(bd6==bd7);//true

        //5.对象一旦创建，内部的数据不能发生改变
        BigInteger bd9 = BigInteger.valueOf(1);
        BigInteger bd10 = BigInteger.valueOf(2);
        BigInteger result = bd9.add(bd10);//3
        //此时，不会修改参与计算的BigInteger对象中的值，而是产生了一个新的BigInteger对象记录3

    }
}
